// ==UserScript==
// @name         网络学院点击播放
// @namespace    http://tampermonkey.net/
// @version      1.0.12
// @description  try to take over the world!
// @author       Le
// @match        http://gpzx.cei.cn/trainingcourse/goTCourseDetail.do*
// @icon         
// @updateURL    https://gitee.com/clearlove123/video/raw/master/openVideo.user.js
// @installURL   https://gitee.com/clearlove123/video/raw/master/openVideo.user.js
// @downloadURL  https://gitee.com/clearlove123/video/raw/master/openVideo.user.js
// @grant        none
// ==/UserScript==


(function () {
    // 执行main方法
    main();

    async function main() {
        // 必修选修按钮
        var btn_List = [];
        // 必修(required-course)
        btn_List.push($(".required-course"));
        // 选修(elective-course)
        btn_List.push($(".elective-course"));
        for (let btn of btn_List) {
            btn.click()
            await sleep(100);
            console.debug("开始点击去学习");
            var go_stduy_btn = $(".known");
            var id = go_stduy_btn.attr("id");
            if (!id) {
                // 如果获取不到去学习按钮，就点击下一个按钮
                console.debug(btn.text() + "获取课程失败");
                continue;
            }
            // 点击第一个去学习按钮
            go_stduy_btn[0].click();
            await sleep(100);
            catch_ShowCourseware(id)
                .then((data) => {
                    /* 遍历每个课程 */
                    for (let course of data.cwlist) {
                        console.debug(course);
                        var schedule = Number(course.SCHEDULE);
                        if (schedule !== 100) {
                            console.info("开始学习:\n" + course.NAME + "\n学习进度：" + schedule)
                            // 开始学习
                            play_Video(course);
                            return;
                        }
                    }
                });
        }
        console.error("能到这里说明必修和选修都点了一遍，没开始学习");
    }

// Your code here...

    /**
     * 找到播放按钮并学习
     *
     * @author Le
     * @since 2023/2/16
     */
    async function play_Video(cwlistElement) {
        console.log("开始学习", cwlistElement);
        // 打开学习页面
        // studyCourseware(cwlistElement.ID, cwlistElement.FILENAME);
        var play_btn = document.getElementsByClassName("required-course-play");
        if (!play_btn || play_btn.length === 0) {
            console.error("获取播放按钮失败");
        }
        for (let playBtnElement of play_btn) {
            if (playBtnElement.outerHTML.includes(cwlistElement.ID)) {
                playBtnElement.click();
                return;
            }
        }
        console.error("找不到指定的播放按钮");
    }

    /**
     * 复制源码里的请求
     *
     * @author Le
     * @since 2023/2/16
     * */
    async function catch_ShowCourseware(id) {
        console.debug("开始重发请求");
        var userTcrid = $("#userTcrid").val();
        return $.ajax({
            type: 'GET',
            url: "http://gpzx.cei.cn:80/trainingcourse/queryCoursewarelist.do",
            data: {
                ID: id,
                userTcrid: userTcrid,
                TCID: $("#TCID").val()
            },
            dataType: 'json',
            contentType: 'application/json;charset=UTF-8',
            async: false
        });
    }

    // 睡眠（单位：毫秒）
    async function sleep(time) {
        return new Promise((resolve) => setTimeout(resolve, time));
    }

})();
